// parkingRecord.js - 车辆出入场记录相关API
import request from '../plugins/axios';

// 获取停车场名称
const getParkingLotName = (lotId) => {
  const lot = mockParkingLots.find(item => item.id === lotId);
  return lot ? lot.name : '未知停车场';
};

/**
 * 计算停车时长
 * @param {string} entryTime 入场时间
 * @param {string} exitTime 出场时间
 * @returns {Object} 停车时长信息
 */
export function calculateParkingDuration(entryTime, exitTime) {
  if (!entryTime || !exitTime) {
    return { hours: 0, minutes: 0, totalMinutes: 0 };
  }

  const entry = new Date(entryTime);
  const exit = new Date(exitTime);
  const diffMs = exit - entry;
  const diffMinutes = Math.floor(diffMs / 60000);
  const hours = Math.floor(diffMinutes / 60);
  const minutes = diffMinutes % 60;

  return { hours, minutes, totalMinutes: diffMinutes };
}

/**
 * 计算预估费用
 * @param {string} entryTime 入场时间
 * @param {string} exitTime 出场时间
 * @returns {number} 预估费用
 */
export function calculateEstimatedFee(entryTime, exitTime) {
  const { totalMinutes } = calculateParkingDuration(entryTime, exitTime);
  // 每小时10元，不足1小时按1小时计算
  return Math.ceil(totalMinutes / 60) * 10;
}

/**
 * 获取停车记录列表
 * @param {Object} params 查询参数
 * @returns {Promise} 停车记录列表
 */
export function getParkingRecordList(params) {
  return request({
    url: '/api/parking-records',
    method: 'get',
    params: {
      ...params,
      type: 'list'
    }
  });
}

/**
 * 获取当前停车状态
 * @returns {Promise} 当前停车状态
 */
export function getCurrentParkingStatus() {
  return request({
    url: '/api/parking-records',
    method: 'get',
    params: {
      type: 'current'
    }
  });
}

/**
 * 获取停车记录详情
 * @param {number} id 记录ID
 * @returns {Promise} 停车记录详情
 */
export function getParkingRecordDetail(id) {
  return request({
    url: `/api/parking-records/${id}`,
    method: 'get'
  });
}

/**
 * 创建停车记录（入场）
 * @param {Object} data 入场信息
 * @returns {Promise} 创建结果
 */
export function createParkingRecord(data) {
  return request({
    url: '/api/parking-records',
    method: 'post',
    data
  });
}

/**
 * 更新停车记录（出场）
 * @param {Object} data 出场信息
 * @returns {Promise} 更新结果
 */
export function updateParkingRecord(id, data) {
  return request({
    url: `/api/parking-records/${id}`,
    method: 'put',
    data
  });
}

/**
 * 获取停车记录统计信息
 * @param {Object} params 查询参数
 * @returns {Promise} 统计信息
 */
export function getParkingRecordStats(params) {
  return request({
    url: '/api/parking-records',
    method: 'get',
    params: {
      ...params,
      type: 'stats'
    }
  });
}

/**
 * 计算停车费用
 * @param {number} id 记录ID
 * @returns {Promise} 计算结果
 */
export function calculateParkingFee(id) {
  return request({
    url: `/api/parking-records/${id}/calculate-fee`,
    method: 'get'
  });
}

/**
 * 更新支付状态
 * @param {number} id 记录ID
 * @param {number} paymentId 支付ID
 * @returns {Promise} 更新结果
 */
export function updatePaymentStatus(id, paymentId) {
  return request({
    url: `/api/parking-records/${id}/payment`,
    method: 'put',
    params: { paymentId }
  });
}

/**
 * 获取用户停车记录
 * @param {Object} params 查询参数
 * @returns {Promise} 用户停车记录列表
 */
export function getUserParkingRecords(params) {
  return request({
    url: '/api/parking-records/user',
    method: 'get',
    params: {
      ...params,
      type: 'user'
    }
  });
}
